package com.whut.service;


import com.alibaba.fastjson.JSONObject;
import com.whut.model.ContractCheckTask;
import com.whut.model.Measureresulttype;
import com.whut.model.Measuresystem;
import com.whut.model.Measuretablerecord;
import com.whut.v_model.MeasureTableDetail;

import java.util.List;

/***
* 实测实量模块Service
* @author fuzhenjie
* @date 19.8.9 20:25
*/
public interface MeasureService {

    /**
    * 将从前端得到的体系存入数据库，并返回新的数据
    * @author fuzhenjie
    * @date 19.8.9 20:42
    * @param measureSystem 体系bean
    * @return java.lang.Object
    */
    public Object insertSystem(Measuresystem measureSystem);

    /**
    * 通过前置体系Id得到下一级的体系列表
    * @author fuzhenjie
    * @date 19.8.9 20:58
    * @param preNum 前置体系Id
    * @return java.lang.Object
    */
    public Object getSystemByPreNum(int preNum);

    /**
    * 更新体系，并返回新的数据
    * @author fuzhenjie
    * @date 19.8.9 21:10
    * @param measureSystem 体系bean
    * @return java.lang.Object
    */
    public Object updateSystem(Measuresystem measureSystem);

    /**
    * 通过前置体系Id 找到实测实量体系结果详情 列表
    * @author fuzhenjie
    * @date 19.8.9 21:14
    * @param preNum 前置体系Id
    * @return java.lang.Object
    */
    public Object getResultTypeList(int preNum);

    /**
    * 插入新增的 结果类型bean并返回新的列表
    * @author fuzhenjie
    * @date 19.8.9 21:24
    * @param measureResultType 结果类型bean
    * @return java.lang.Object
    */
    public Object insertResultType(Measureresulttype measureResultType);

    /**
    * 更新某个结果类型 并返回更新后的数据
    * @author fuzhenjie
    * @date 19.8.9 21:29
    * @param measureResultType 结果类型bean
    * @return java.lang.Object
    */
    public Object updateResultType(Measureresulttype measureResultType);


    /**
    * 删除结果类型并返回新的结果类型列表
    * @author fuzhenjie
    * @date 19.8.13 15:54
    * @param measureresulttype 要删除的记录
    * @return java.lang.Object
    */
    public Object delResultType(Measureresulttype measureresulttype);


    /**
    * 删除体系，并返回新的体系
    * @author fuzhenjie
    * @date 19.8.13 15:55
    * @param measuresystem 要删除的记录
    * @return java.lang.Object
    */
    public Object delSystem(Measuresystem measuresystem);

    /**
     * 通过表格的Id找出其下所有的种类信息
     * @author fuzhenjie
     * @date 19.8.18 11:28
     * @param tableId int 表格（体系第三级ID）
     * @return java.util.List<com.whut.v_model.MeasureTableDetail>
     */
    public List<MeasureTableDetail> getTableDetailByTableId(int tableId);

    /**
    * 插入检查结果的记录
    * @author fuzhenjie
    * @date 19.8.18 12:46
    * @param jsonString String 数据
    * @param cct Contractchecktask 检查信息
    * @param userId 创建者Id
    * @return Object
    */
    public Object insertResultData(ContractCheckTask cct, String jsonString, int userId);

    /**
     * LYL
     * @param checkId
     */
    public Object getTableData(int checkId);


    /**
    *通过记录的ID找到 其下所有测点类型的合格率用以显示结果 另外附加这次检查的总合格率
    *@author fuzhenjie
    *@date 19.9.23 12:12(GMT)
    *@param recordId
    *@return com.alibaba.fastjson.JSONObject
    */
    public JSONObject getRecordRateDetail(int recordId);


    /**
     * 从cct表中查找出所有与包含userId的组有关的cct 时间倒序
     *@author fuzhenjie
     *@date 19.10.16 9:40(GMT)
     *@param userId int 用户Id
     *@return Object
     */
    public Object getCctListByUserId(int userId,int curPage,int pageSize);

    /**
    * 通过cct的mkey来找此次检查下所有的实测实量记录
    *@author fuzhenjie
    *@date 19.10.16 19:46(GMT)
    *@param mKey int cct mkey
    *@return java.util.List<com.whut.model.Measuretablerecord>
    */
    public List<Measuretablerecord> getMeasureDetailByCct(int mKey);
}
